unity序列帧优化 您所在的位置:网站首页 unity 动画播放卡顿 unity序列帧优化

unity序列帧优化

2024-07-17 23:10| 来源: 网络整理| 查看: 265

unity序列帧优化 前言一、导入Addressables System二、标记资源1.拖入动画到自定义的目录下2.资源编译打包 三、引用资源总结补充

前言

开发过程中,有可能遇到分辨率很大,数量也很多的序列帧动画需求,在甲方要求高清晰度 ,不能压缩的情况下,正常做成动画直接打包,1.5G的序列帧动画,打出来的包在3.5G左右,加载卡顿严重。在这种情况下,建议使用Addressable System进行处理。

一、导入Addressables System

当前unity版本为2018.2.11,打开Package Manager,在all中选择Addressables System,并Install,安装好之后可以在Window --> Asset Management --> Addressable Assets中打开Addressables窗口。 在这里插入图片描述

二、标记资源 1.拖入动画到自定义的目录下

在这里插入图片描述

2.资源编译打包

打包好的资源在AddressableAssetsData目录下

三、引用资源

选择要引用的controller,勾选Addressable,后边的地址就可以复制了,复制地址在代码中使用。 在这里插入图片描述

代码如下(示例):

public Animator animator; void Start () { Addressables.LoadAsset("Assets/背景的_00000.controller").Completed += OnLoadDone; } private void OnLoadDone(IAsyncOperation data) { animator.runtimeAnimatorController = data.Result; animator.enabled = true; } 总结

按照这样的方法,一是资源无需重复编译,打包的时间大幅度缩小,二是加载时是先加载场景,再读取资源,可在界面添加加载资源提示,不会出现卡顿很久无法进入的情况。

补充

在后边项目的实际使用当中发现了一些问题,一块总结到下边。 1、实际打包中,只在一个 Group 中打包这些序列帧资源的话,超过一定量级依然出现资源加载异常,序列帧闪烁的情况 解决:将资源分配在多个Group中进行打包。在这里插入图片描述 2、上边文章中介绍的插件运行环境是2018.2.11的0.5.3版本,在2019.4.39版本中,我使用的是1.18.19版本的Addressables,上边提及的LoadAsset方法已经过时了,转而使用LoadAssetsAsync,但是不影响整体效果。而且新版也不会将资源自动编译放入 StreamingAssets文件夹中了,而是在Library\com.unity.addressables文件夹下,但是出包后依然在StreamingAssets中。

public AssetLabelReference assetLabel; void Start() { Addressables.LoadAssetsAsync(assetLabel, OnLoadDone); } /// /// 资源加载完成回调,此处可以加一个进度显示和交互限制,等待加载完毕之后再操作,防止异常 /// /// void OnLoadDone(RuntimeAnimatorController animtorClip) { Debug.Log(animtorClip.name); }

3、项目序列帧资源为240M,实测正常流程制作Animation打包大小为5.59G,使用Addressables后包体大小为388M(在对比过程中还有一个小发现,使用2019打包巨多序列帧的程序,实际运行时占用的内存空间是很小的,而2018中则需要申请巨大的空间,有了解其中原因的可以科普一下)。 2019出的包:在这里插入图片描述 2018出的包:在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有